<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>The source code</title>
  <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
  <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
  <style type="text/css">
    .highlight { display: block; background-color: #ddd; }
  </style>
  <script type="text/javascript">
    function highlight() {
      document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
    }
  </script>
</head>
<body onload="prettyPrint(); highlight();">
  <pre class="prettyprint lang-js"><span id='VUI-Date'>/**
</span> * 日期工具类
 * @class
 */
VUI.Date = {
<span id='VUI-Date-method-isLeapYear'>	/**
</span>	 * 判断是否是闰年
	 * @param year 年份
	 * @return 闰年为true
	 */
	isLeapYear:function(year) {
		return !!((year &amp; 3) == 0 &amp;&amp; (year % 100 || (year % 400 == 0 &amp;&amp; year)));
	}
<span id='VUI-Date-method-isDateStr'>	/**
</span>	 * 是否是日期类型
	 * @param dateStr 字符串日期
	 * @return 是,true
	 */
	,isDateStr:function(dateStr) {
		return !!this._parseDateStrToNum(dateStr);
	}
<span id='VUI-Date-method-getMonthDaysArr'>	/**
</span>	 * 根据年份获取每月的天数
	 * @param year 年份
	 * @return 返回每个月的天数,数组形式
	 */
	,getMonthDaysArr:function(year) {
		// 存放每月天数
		var month_days_arr = [31,28,31,30,31,30,31,31,30,31,30,31];
		// 二月份天数
		month_days_arr[1] = this.isLeapYear(year) ? 29 : 28;
		
		return month_days_arr;
	}
<span id='VUI-Date-method-getEndDate'>	/**
</span>	 * 根据年月得到该月的最后一天
	 * @param year 年份
	 * @param month 月份
	 * @return 返回该月最后一天
	 */
	,getEndDate:function(year,month) {
		// 存放每月天数
		var month_days_arr = this.getMonthDaysArr(year);
		return month_days_arr[month - 1];
	}
<span id='VUI-Date-method-parse'>	/**
</span>	 * 将字符串日期转换成Date类型
	 * 	
	 * @param dateStr 字符串日期,如:
	 *  var s = &quot;2012-9-3 09:41:30&quot;;
	 *  var s2 = &quot;2012-09-03 09:41:30&quot;;
	 *  var s3 = &quot;9/3/2012 09:41:30&quot;;
	 *  var s4 = &quot;2012-9-3&quot;;
	 * @return Date类型日期
	 */
	,parse:function(dateStr) {
		return new Date(this._parseDateStrToNum(dateStr)); 
	}
<span id='VUI-Date-method-_parseDateStrToNum'>	,_parseDateStrToNum:function(dateStr) {
</span>		return Date.parse(dateStr.replace(/-/g,&quot;/&quot;));
	}
<span id='VUI-Date-method-format'>	/**
</span>	 * 格式化日期&lt;br&gt;
	 * 使用方法:
	 * &lt;code&gt;
	 * var dateStr = VUI.Date.format(new Date(),'yyyy-MM-dd hh:mm:ss.S');
	 * &lt;/code&gt;
	 * 
	 * @param dateInstance Date实例
	 * @param 格式化字符串,如&quot;yyyy-MM-dd&quot;,&quot;yyyy-MM-dd hh:mm:ss.S&quot;
	 * 
	 * @return 返回格式化后的字符串
	 */
	,format:function(dateInstance,pattern) {
		var o = {   
			&quot;M+&quot; : dateInstance.getMonth()+1,                 //月份    
			&quot;d+&quot; : dateInstance.getDate(),                    //日    
			&quot;h+&quot; : dateInstance.getHours(),                   //小时    
			&quot;m+&quot; : dateInstance.getMinutes(),                 //分    
			&quot;s+&quot; : dateInstance.getSeconds(),                 //秒    
			&quot;q+&quot; : Math.floor((dateInstance.getMonth()+3)/3), //季度    
			&quot;S&quot;  : dateInstance.getMilliseconds()             //毫秒    
		};   
		if(/(y+)/.test(pattern)) {
			pattern = pattern.replace(RegExp.$1, (dateInstance.getFullYear()+&quot;&quot;).substring(4 - RegExp.$1.length));   
		}
			
		for(var k in o) {
			if(new RegExp(&quot;(&quot;+ k +&quot;)&quot;).test(pattern)) {
				pattern = pattern.replace(RegExp.$1, (RegExp.$1.length == 1) 
					? (o[k]) 
					: ((&quot;00&quot;+ o[k]).substring((&quot;&quot;+ o[k]).length))); 
			}
		}
			
		return pattern; 
	}
};</pre>
</body>
</html>
